package py.fpuna.ii.electiva2.dto;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import py.fpuna.ii.electiva2.entity.Cliente;
import py.fpuna.ii.electiva2.entity.Venta;

/**
 *
 * @author lizg
 */
public class ClienteDTO {
    
    private Integer clieCodigo;
    private String clieNombre;
    private String clieApellido;
    private String clieCi;
    private String clieDireccion;
    private String clieRuc;
    private Collection<VentaDTO> ventaCollection;

    public ClienteDTO() {
    }

    public ClienteDTO(Integer clieCodigo) {
        this.clieCodigo = clieCodigo;
    }

    public ClienteDTO(Integer clieCodigo, String clieNombre, String clieApellido, String clieCi, String clieDir, String clieRuc) {
        this.clieCodigo = clieCodigo;
        this.clieNombre = clieNombre;
        this.clieApellido = clieApellido;
        this.clieCi = clieCi;
        this.clieDireccion = clieDir;
        this.clieRuc = clieRuc;
    }

    public Integer getClieCodigo() {
        return clieCodigo;
    }

    public void setClieCodigo(Integer clieCodigo) {
        this.clieCodigo = clieCodigo;
    }

    public String getClieNombre() {
        return clieNombre;
    }

    public void setClieNombre(String clieNombre) {
        this.clieNombre = clieNombre;
    }

    public String getClieApellido() {
        return clieApellido;
    }

    public void setClieApellido(String clieApellido) {
        this.clieApellido = clieApellido;
    }

    public String getClieCi() {
        return clieCi;
    }

    public void setClieCi(String clieCi) {
        this.clieCi = clieCi;
    }

    public String getClieDireccion() {
        return clieDireccion;
    }

    public void setClieDireccion(String clieDireccion) {
        this.clieDireccion = clieDireccion;
    }

    public String getClieRuc() {
        return clieRuc;
    }

    public void setClieRuc(String clieRuc) {
        this.clieRuc = clieRuc;
    }

    public Collection<VentaDTO> getVentaCollection() {
        return ventaCollection;
    }

    public void setVentaCollection(Collection<VentaDTO> ventaCollection) {
        this.ventaCollection = ventaCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (clieCodigo != null ? clieCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof ClienteDTO)) {
            return false;
        }
        ClienteDTO other = (ClienteDTO) object;
        if ((this.clieCodigo == null && other.clieCodigo != null) || (this.clieCodigo != null && !this.clieCodigo.equals(other.clieCodigo))) {
            return false;
        }
        return true;
    }

    /**
     * convierte un DTO en un Entity
     * @return entidad Cliente
     */
    public Cliente toEntity(){
        Cliente cliente = new Cliente();

        cliente.setClieCodigo(this.getClieCodigo());
        cliente.setClieNombre(this.getClieNombre());
        cliente.setClieApellido(this.getClieApellido());
        cliente.setClieCi(this.getClieCi());
        cliente.setClieDireccion(this.getClieDireccion());

        List <Venta> listVenta = new ArrayList<Venta>();
        Iterator <VentaDTO> itVenta = this.getVentaCollection().iterator();
        while(itVenta.hasNext()){
            listVenta.add(itVenta.next().toEntity());
        }
        cliente.setVentaCollection(null);


        return cliente;
    }

}
